package a06_栈与队列;

import java.util.Deque;
import java.util.LinkedList;
import java.util.Stack;

/**
 * <p>
 * a03_有效的括号
 * </p>
 *
 * @author flyduck
 * @since 2024-07-30
 */
public class a04_有效的括号 {

    public static void main(String[] args) {
        System.out.println(isValid("(("));
    }


    //三种情况{[()]}
    //{[]：左括号多余
    //{[}}：数量匹配，但是类型不匹配
    //()]：右括号多余
    public static boolean isValid(String s) {
        Stack<Character> stack = new Stack<>();
        char[] chars = s.toCharArray();
        for (char c : chars) {
            if (c == '(') {
                stack.push(')');
            }else if(c == '['){
                stack.push(']');
            }else if(c == '{'){
                stack.push('}');
            }else {
                //stack.size() == 0 右括号多余
                //!stack.pop().equals(c) 类型不匹配
                if(stack.isEmpty() || !stack.pop().equals(c)){
                    return false;
                }
            }
        }
        return stack.isEmpty();//左括号多余
    }
}
